home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1997 April
/
EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso
/
EARCD
/
comm
/
misc
/
Logon_098.lha
/
logon.dok
< prev
next >
Wrap
Text File
|
1996-11-09
|
15KB
|
348 lines
Luxus Logon
von M. Albrecht
(C) 1993-1996
Alle (kommerziellen) Rechte
vorbehalten, Verbreitung
als Freeware erlaubt -
kein Gewinn durch das
spezifische Anbieten dieses
Programmes gestattet
Verbreitung auf CDRom,
Magazin-Disk oder ähnlichem
nur nach vorheriger Absprache
mit dem Autor.
Verbreitung über das Aminet
sowie die daraus resultierenden
CDRoms ausdrücklich gewünscht.
1. VORWORT
Dieses Programm, im Folgenden LOGON genannt, entstand 1993, als mein
damaliger Betatester für Mailbox-Tools wegen seines Urlbaubs eine Lösung
brauchte, die sein Modem überwacht, nach dem Klingeln abnimmt und je nach
den weiteren Geschehnissen Aktionen ausführte oder nur eine Absage
schickte...
Ich nannte es damals SerialButler, es war ein simples Frontend zum Einsatz
vor Mailbox, Fax oder ähnlichem.
Heute, nachdem ich trotz intensivem Suchens kein DialUp Programm gefunden
hatte, das mir wirklich gefiel und das sofort "at hand" war, habe ich den
Butler reaktiviert, mit einem schlichten GUI versehen und vom
Funktionsumfang etwas erweitert.
Die aktuelle Version LOGON V0.98 ist als Commodity programmiert, das GUI
ist in der Größe variabel und die Anwendung ist, besteht ein
funktionierendes Script, nicht weiter vereinfachbar.
2. BENUTZUNG
Als ToolTypes (bei Workbenchstart) kann neben den Standard-Tooltypes für
Commodities ("HOTKEY", "CX_POPUP" und "PRIORITY") noch ein solcher für das
zu ladende Script angegeben werden: "SCRIPT=T-Online.script" lädt z.B. das
genannte Script.
Beim Start vom CLI aus können die Tooltypes als Argumente übergeben werden.
Wenn ein funktionierendes Script (es liegt eines für T-Online bei) geladen
ist, so muß lediglich beim ersten Programmstart "Script/Enter Values"
(Amiga-V) aufgerufen werden. Hier wird der Benutzer nach User-Name und
Passwort gefragt. Sind alle erforderlichen Werte eingegeben (das heißt: die
Liste beginnt von vorn), schließt der Benutzer das Fenster, speichert das
geänderte Script mit "Project/Save" (Amiga-W) ab und startet, nach Wunsch,
den Connect mit der Maus oder "C".
Voraussetzung beim mitgelieferten T-Online-Script ist ein korrekt
installiertes AmiTCP 4.xx, dessen "StartNet" im Pfad erreichbar ist und auf
Point-2-Point mit IP und DESTINATION-IP eingestellt ist. Ein
Beispiel-Startnet für AmiTCP ist beigelegt.
Eventuell ist es nötig, die Parameter für das serielle Device sowie das
benutzte Modem zu ändern. Dazu sollte "Script/Edit" (Amiga-E) aufgerufen
werden und im oberen linken Viertel des Windows die Einstellungen angepasst
werden. Das AT-Kommando für das Modem ist als "Start-AT" auf der rechten
Seite zu finden.
Disconnect dient dazu, kontrolliert die Verbindung abzubauen - dies kann
z.B. ein "StopNet", Zurücksetzen des Modems und Neustarten eines Mailers
beinhalten.
3. SCRIPTE ERSTELLEN
Hat man sich einmal mit der Programmlogik angefreundet, ist das Erstellen
neuer Script sehr schnell getan. Grundgedanke eines Scripts ist immer:
- Ich sende etwas an das Modem
- ich warte auf zwei alternative Antworten oder ein Timeout
- je nach Antwort wird an eine andere Scriptstelle verzweigt oder ein
externes Programm ausgeführt
- erfolgt ein Timeout wird die rechte Alternativ-Seite ausgeführt.
Zunächst sollte die obere Hälfte des Edit-Script Fensters ausgefüllt
werden. Diese Werte bleiben während des gesamten Scripts erhalten und
dienen dem Start und Ende des Programms.
Device, Unit und Baud sollten keine Fragen aufwerfen. Auf der rechten
Hälfte des Fensters finden sich String-Gadgets mit folgenden Bedeutungen:
START-BATCH wird ausgeführt, BEVOR das serielle Device geöffnet wird. Als
Anwendungsbeispiel denke man sich, daß ein auf der selben Schnittstelle
laufender Mailer zunächst heruntergefahren werden sollte (z.B. mit traptell
"unlisten").
START-AT wird nach dem Öffnen der Schnittstelle und dem Leeren des Puffers
an das Modem gesandt. Sinnvoll ist hier zumindest ein "AT", damit das Modem
sich auf die eventuell geänderte Baud-Rate einstellen kann. Ein "\r"
bedeutet ein $0C - normalerweise der Zeilenabschluß für Modems. Ein "\n"
wäre ein normales Linefeed $0A. Ein "\\" sendet ein einzelnes Backslash.
END-AT wird zum Modem gesandt, BEVOR der Disconnect-Teil des Scripts
aufgerufen wird. Damit kann z.B. in den Commando-Modus des Modems
gewechselt werden - oder was auch immer. "\n", "\r" und "\\" wie oben.
END-BATCH wird ausgeführt, BEVOR das serielle Device für das
Disconnect-Script geöffnet wird. Damit kann z.B. "StopNet" aufgerufen
werden.
Stimmen die Werte hier, kann das eigentliche Script erstellt werden.
Grundsätzlich muß für ein CONNECT auch ein "Connect"-Label vorhanden sein,
wobei Groß-Kleinschreibung egal ist - es darf auch NACH dem "Connect" noch
weiteres im Namen stehen, das ERSTE "Connect"-Label wird angesprungen, wenn
der Benutzer auf das Connect-Gadget drückt.
Das Gleiche gilt für "Disconnect" - es muß ein "Disconnect" Label vorhanden
sein.
Es ist sinnvoll, beide Label gleich zu Beginn zu erzeugen, damit keine
"Script-Errors" auftreten. Die Position im Script ist egal.
Nun zum komplexesten Teil des Fensters: im unteren rechten Viertel wird
jeder Script-Teil erstellt. Die Gadgets haben folgende Funktion:
LOG CMD: Diese Zeile wird (per Execute) zu Beginn des jeweiligen Labels
ausgeführt - sie darf natürlich leer sein. Die Platzhalter "%l" und "%s[z]"
funktionieren wie unten erklärt.
OUT: Diese Zeile wird zu Beginn des Labels an das Modem gesandt (sofern
etwas im Gadget enthalten ist). Der String wird geparset, das heißt, daß
"\r", "\l" und entsprechend "\\" durch CarriageReturn, LineFeed oder
Backslash ersetzt werden.
TIMEOUT: Diese Zahl gibt die TICKS an (50 Ticks/Sekunde!), nach denen die
rechte Seite der Optionen ausgeführt wird, wenn vorher nicht einer der
Strings (s.u.) erkannt wurde. Ein TIMEOUT von 0 heißt, daß auf kein String
gewartet wird sondern sofort weitergearbeitet wird, ein TIMEOUT von -1
heißt, daß das Label NUR durch erkannte Strings abgebrochen werden kann.
(Randbemerkung: jederzeit läßt sich die Script-Abarbeitung durch ein
CTRL-C, an LOGON geschickt, abbrechen!)
Die zwei folgenden Spalten haben fast identische Funktionen. Ich nenne die
linke Spalte die "GOOD", die rechte die "BAD" Spalte - da die rechte auch
vom TimeOut ausgeführt werden kann.
Im zuoberst liegenden Stringgadget steht ein STRING-Element (Groß/Klein
egal!), das als Trigger für die darunter stehende Funktion arbeitet.
Enthält der vom Modem kommende Datenstrom die Zeichenkette, wird SOFORT
NACH dem letzten im Stringgadget angegebenen Zeichen unterbrochen und die
Funktion ausgeführt - das heißt, daß folgende Zeichen im Puffer verbleiben
und dort ausgelesen werden können (dazu unten mehr).
Das Cycle-Gadget darunter enthält derzeit folgende Funktionen:
- Jump Label: springt, bei Erreichen der Zeichenkette, sofort an das unter
dem CycleGadget genannte Label - dieses muß natürlich vorhanden sein!
- Repeat: wiederholt bei Erreichen der Zeichenkette das aktuelle Label
- Exit Script: Beendet das Script und führt ein DISCONNECT aus! (sinnvoll
also z.B. bei Fehlern!) - die serielle Schnittstelle wird geschlossen.
- Script End: Beendet das Script und schließt die serielle Schnittstelle.
- New Script: NOCH NICHT IMPLEMENTIERT! lädt das unter dem CycleGadget
angegebene Script und startet es beim Label "Connect".
- Execute: führt die unter dem CycleGadget angegebene Zeile aus und springt
zum FOLGENDEN Label (das heißt zum direkt nach dem aktuellen Label in der
List stehenden!)
- Close/Exe: schließt das serielle Device (ohne den Puffer zu leeren) und
führt die unter dem CycleGadget stehende Zeile aus. Wird z.B. nach dem
Login ein anderes Terminal-Programm gestartet, muß ja VOR dem Starten die
serielle Schnittstelle geschlossen worden sein.
- Disable: erlaubt das (temporäre) Deaktivieren eines Labels (das unter
dem CycleGadget angegeben wird). Das deaktivierte Label wird in dieser
Script-Ausführung NICHT mehr benutzt, statt dessen wird das direkt
auf das deaktivierte Label folgende Label angesprungen.
Das bedeutet, das NACH einem Label, das deaktiviert werden KÖNNTE,
auf jeden Fall ein Ersatzlabel kommen sollte (das z.B. einfach einen
Jump zum nächsten ausführt).
Sinn der Sache ist: will man mehrere Nummern anwählen und erhält bei
bestimmten Nummern z.B. NO CARRIER, so kann man DIESE Nummer einfach
für weitere Anwahlversuche sperren.
Wird das Script NEU ausgeführt, werden ALLE Label wieder benutzt.
Die Fragezeichen rechts von String-Gadgets öffnen einen Filerequester, um
das bequeme Finden von Pfad/Befehl zu ermöglichen.
Externe Funktionsaufrufe können Elemente aus dem seriellen Datenstrom
übergeben bekommen. Das funktioniert so:
Enthält das Execute-Commando den Platzhalter "%l" (kleines "L"!), so wird
der Rest der Zeile, die die gefundene Zeichenkette enthält, an die Stelle
des Platzhalters gesetzt (beim LogCommand die gerade im Puffer liegende
Zeile).
Enthält das Execute-Commando den Platzhalter "%s", so wird das FOLGENDE
Zeichen nach dem Platzhalter als Stop-Zeichen angesehen. Beispielsweise
kopiert ein "%s." alle Zeichen aus dem seriellen Strom bis zum nächsten
Punkt in die Execute-Zeile.
Beispiel: LOGON sucht nach dem String "YOURIP" im Datenstrom. Wurde dieser
gefunden, wird der Befehl "startnet ip=%l" ausgeführt. Die Funktion: Kommt
vom Modem das Wort "YOURIP" (egal, welche Schreibung), so wird "startnet"
ausgeführt mit allem, was die "YOURIP"-Zeile nach dem "YOURIP" noch
enthielt - hoffentlich also der aktuellen IP-Adresse.
Beispiel: LOGON sucht nach dem String "Sie haben" im Datenstrom. Wurde
dieser gefunden, wird der Befehl "echo %sn neue Nachrichten" ausgeführt. Die
Funktion: Kommt vom Modem der String "Sie haben", wird ein ECHO ausgeführt,
das die nachfolgenden Zeichen bis zum nächsten kleinen "n" ausdruckt und
den Text "neue Nachrichten" anhängt. Normalerweise stünde also beim
automatischen Einloggen in eine Mailbox hinterher auf dem Bildschirm,
wieviele neue Nachrichten in der Box für den Benutzer vorliegen.
4. SCRIPTE MODIFIZIEREN
In Scripten kann zwar beliebig geändert werden, da man aber z.B. jederzeit
einen Label-Namen einfach umbenennen kann, die entsprechenden
Sprunganweisungen im Script aber nicht automatisch angepasst werden, ist es
sinnvoll, in einem komplexen Script bestimmte Stellen von extern anpassen
zu lassen.
Enthält ein Label-Name als erstes Zeichen ein "!" (Ausrufungszeichen), so
wird dieser Label vom Menü "Scripts/edit Values" benutzt.
So sollten z.B. in einem allgemeingültigen Mailbox-Login Username und
Passwort als einzelne Labels mit den Namen "! Username" und "! Passwort"
(das Freizeichen ist optional) angelegt werden. Ruft der Benutzer dann
"Scripts/Edit Values" auf, wird er nach diesen Werten gefragt und die
Eingaben werden als "OUT" String in die Labels eingefügt (werden also im
entsprechenden Moment an das Modem gesandt).
Das beiliegende T-Online Script enthält die Teilnehmerkennung und das
Passwort als solche Labels. Damit kann die Anpassung mit zwei Eingaben
geschehen (vorausgesetzt, die Serial Parameter stimmen...)
5. GEPLANTE ERWEITERUNGEN, PROBLEME ETC
Natürlich ist das Programm erweiterbar. Neben der noch einzubauenden "New
Script" Funktion, die ein externes Script aufruft, wenn eine bestimmte
Zeichenkette erkannt wurde, sind noch weitere Funktionen denkbar - wenn
auch nicht unbedingt erforderlich.
Ich habe sowohl das Programm als auch die beigelegten Scripte mehrfach
getestet - kann aber nicht garantieren, daß alles völlig bugfrei ist. Ich
freue mich also über (sinnvolle) Bugreports und verspreche, baldmöglichst
für Abhilfe zu sorgen.
Das Programmgerüst selber ist einige Jahre alt - es ist durchaus möglich,
daß da noch Schnitzer drinstecken, die ich trotz intensivem Suchens nicht
gefunden habe.
Läuft ein Script ab, so wird der aktuell bearbeitete Label im Hauptfenster
(wenn dieses offen ist) angezeigt. Leider kann man das Hauptfenster in der
Zeit nicht "resizen" - ich war schlicht zu faul, hier das Multitasking voll
auszureizen.
Denkbar wäre ein schlichter Monitor, der im Hauptfenster die aktuellen
Eingaben/Ausgaben über die Schnittstelle anzeigt...
6. DANK
Die GUIs wurden mit GenGui2.2 erstellt. GenGui ist ein Linkobject, das das
größenvariable Erstellen von GUIs sehr einfach macht.
GenGui ist (C) bei Matthias Meixner
(meixner@rbg.informatik.th-darmstadt.de)
7. RECHTLICHES
Logon darf nur im Original-Archiv weitergegeben werden. Das Archiv enthält
ein T-Online-Script und ein einfaches Mailbox-Script. Zusätzliche Scripts
dürfen GERNE hinzugefügt werden, diese sollten jedoch eindeutig benannt
werden - ein kurzer Hinweis, welche externe Software erforderlich ist, wäre
sinnvoll.
Mailbox-Werbung, Coder-Sprüche und sonstige Werbung oder unnötiger Ballast
dürfen NICHT dem Archiv hinzugefügt werden, ich behalte mir ausdrücklich
das Recht vor, die Verteilung über ein in solchen Readmes genannten System
zu untersagen.
Soll Logon als Teil eines SoftwarePakets, egal, ob kommerziell oder
idealistisch verwertet werden, ist eine SCHRIFTLICHE Einverständnis-
Erklärung von mir erforderlich, ich behalte mir für jeden Einzelfall
vertragliche Sonderkonditionen vor. Jede andere Form von Bundeling ist
untersagt.
Die Verbreitung über Magazin-CDs oder Disks ist ohne vorherige
Einverständniserklärung untersagt. Die Einverständniserklärung ist sehr
leicht zu bekommen - aber erforderlich.
Die Verbreitung über Aminet und Aminet-CDs ist ausdrücklich erwünscht.
Andere Serien-CD Kompilierer bitte ich vorher um Kontaktaufnahme.
Kein Teil des Code darf ohne meine Erlaubnis für andere Produkte verwendet
werden, die Weitergabe eines modifizierten Hauptprogrammes ist streng
untersagt.
8. AUTOR
Adressen:
Marc Albrecht, Seth 2, 21769 Lamstedt
Marc Albrecht - 2:241/205 (FIDO)
marc_albrecht@act-net.com